Fixes #136080.
authorFederico Mena Quintero <federico@ximian.com>
Tue, 9 Mar 2004 00:34:17 +0000 (00:34 +0000)
committerFederico Mena Quintero <federico@src.gnome.org>
Tue, 9 Mar 2004 00:34:17 +0000 (00:34 +0000)
2004-03-08  Federico Mena Quintero  <federico@ximian.com>

Fixes #136080.

* gtk/gtkfilesystemunix.c: Only lstat() if stat() failed due to
ENOENT.
(filename_get_info): Likewise.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkfilesystemunix.c

index 9eaef33480423078bd0eb96067275728b5ccf69c..d8ad0f54cb4dbc41ea4d316b6d34b5c4632c94f2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2004-03-08  Federico Mena Quintero  <federico@ximian.com>
+
+       Fixes #136080.
+
+       * gtk/gtkfilesystemunix.c: Only lstat() if stat() failed due to
+       ENOENT.
+       (filename_get_info): Likewise.
+
 2004-03-08  Federico Mena Quintero  <federico@ximian.com>
 
        * gtk/gtkfilechooserdefault.c
index 9eaef33480423078bd0eb96067275728b5ccf69c..d8ad0f54cb4dbc41ea4d316b6d34b5c4632c94f2 100644 (file)
@@ -1,3 +1,11 @@
+2004-03-08  Federico Mena Quintero  <federico@ximian.com>
+
+       Fixes #136080.
+
+       * gtk/gtkfilesystemunix.c: Only lstat() if stat() failed due to
+       ENOENT.
+       (filename_get_info): Likewise.
+
 2004-03-08  Federico Mena Quintero  <federico@ximian.com>
 
        * gtk/gtkfilechooserdefault.c
index 9eaef33480423078bd0eb96067275728b5ccf69c..d8ad0f54cb4dbc41ea4d316b6d34b5c4632c94f2 100644 (file)
@@ -1,3 +1,11 @@
+2004-03-08  Federico Mena Quintero  <federico@ximian.com>
+
+       Fixes #136080.
+
+       * gtk/gtkfilesystemunix.c: Only lstat() if stat() failed due to
+       ENOENT.
+       (filename_get_info): Likewise.
+
 2004-03-08  Federico Mena Quintero  <federico@ximian.com>
 
        * gtk/gtkfilechooserdefault.c
index 9eaef33480423078bd0eb96067275728b5ccf69c..d8ad0f54cb4dbc41ea4d316b6d34b5c4632c94f2 100644 (file)
@@ -1,3 +1,11 @@
+2004-03-08  Federico Mena Quintero  <federico@ximian.com>
+
+       Fixes #136080.
+
+       * gtk/gtkfilesystemunix.c: Only lstat() if stat() failed due to
+       ENOENT.
+       (filename_get_info): Likewise.
+
 2004-03-08  Federico Mena Quintero  <federico@ximian.com>
 
        * gtk/gtkfilechooserdefault.c
index 9eaef33480423078bd0eb96067275728b5ccf69c..d8ad0f54cb4dbc41ea4d316b6d34b5c4632c94f2 100644 (file)
@@ -1,3 +1,11 @@
+2004-03-08  Federico Mena Quintero  <federico@ximian.com>
+
+       Fixes #136080.
+
+       * gtk/gtkfilesystemunix.c: Only lstat() if stat() failed due to
+       ENOENT.
+       (filename_get_info): Likewise.
+
 2004-03-08  Federico Mena Quintero  <federico@ximian.com>
 
        * gtk/gtkfilechooserdefault.c
index 5cffce937423a25500673c447bc1575e41919660..6e12713999f922211c55a0d8a0248b4281150d6e 100644 (file)
@@ -464,20 +464,22 @@ get_icon_type (const char *filename,
 
   /* If stat fails, try to fall back to lstat to catch broken links
    */
-  if (stat (filename, &statbuf) != 0 &&
-      lstat (filename, &statbuf) != 0)
+  if (stat (filename, &statbuf) != 0)
     {
-      int save_errno = errno;
-      gchar *filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
-      g_set_error (error,
-                  GTK_FILE_SYSTEM_ERROR,
-                  GTK_FILE_SYSTEM_ERROR_NONEXISTENT,
-                  _("error getting information for '%s': %s"),
-                  filename_utf8 ? filename_utf8 : "???",
-                  g_strerror (save_errno));
-      g_free (filename_utf8);
+      if (errno != ENOENT || lstat (filename, &statbuf) != 0)
+       {
+         int save_errno = errno;
+         gchar *filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
+         g_set_error (error,
+                      GTK_FILE_SYSTEM_ERROR,
+                      GTK_FILE_SYSTEM_ERROR_NONEXISTENT,
+                      _("error getting information for '%s': %s"),
+                      filename_utf8 ? filename_utf8 : "???",
+                      g_strerror (save_errno));
+         g_free (filename_utf8);
 
-      return ICON_NONE;
+         return ICON_NONE;
+       }
     }
 
   if (S_ISBLK (statbuf.st_mode))
@@ -1387,21 +1389,22 @@ filename_get_info (const gchar     *filename,
 
   /* If stat fails, try to fall back to lstat to catch broken links
    */
-  if (do_stat &&
-      stat (filename, &statbuf) != 0 &&
-      lstat (filename, &statbuf) != 0)
+  if (do_stat && stat (filename, &statbuf) != 0)
     {
-      int save_errno = errno;
-      gchar *filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
-      g_set_error (error,
-                  GTK_FILE_SYSTEM_ERROR,
-                  GTK_FILE_SYSTEM_ERROR_NONEXISTENT,
-                  _("error getting information for '%s': %s"),
-                  filename_utf8 ? filename_utf8 : "???",
-                  g_strerror (save_errno));
-      g_free (filename_utf8);
+      if (errno != ENOENT || lstat (filename, &statbuf) != 0)
+       {
+         int save_errno = errno;
+         gchar *filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
+         g_set_error (error,
+                      GTK_FILE_SYSTEM_ERROR,
+                      GTK_FILE_SYSTEM_ERROR_NONEXISTENT,
+                      _("error getting information for '%s': %s"),
+                      filename_utf8 ? filename_utf8 : "???",
+                      g_strerror (save_errno));
+         g_free (filename_utf8);
 
-      return NULL;
+         return NULL;
+       }
     }
 
   info = gtk_file_info_new ();